package com;

import java.io.File;
import java.util.Arrays;
import java.util.List;

import com.zx.handler.LogFormatHandler;
import com.zx.handler.ThreadLocalHandler;
import com.zx.model.ConfContent;
import com.zx.model.log.LogMode;
import com.zx.model.log.LogPvAndUv;
import com.zx.util.PrintlnUtil;
import com.zx.util.ReadNgnixCofUtil;
/**
 * @Project: ngnix_analyze
 * @Title: Main
 * @Description: 第一个版本的分析器
 * @author: zhangxue
 * @date: 2018年8月4日下午6:00:38
 * @company: alibaba
 * @Copyright: Copyright (c) 2015
 * @version v1.0
 */
@Deprecated
public class Main {
	
	/** 命令行式启动参数 */
	private final static String COMMAND_MAIN = "-c";
	
	/** 界面窗口启动参数 */
	private final static String WINDOW_MAIN = "-w";
	
	private final static String HELP_TEXT  = "使用方法：java -jar ngnix_analyze.jar [命令] [参数]\r\n" 
											+ "\t-c\t\t使用命令行式启动，后面的参数有两个，第一个是ngnix配置文件的路径，第二个是日志文件的路径\r\n" 
											+ "\t-w\t\t使用命令行式启动，后面的参数有两个，第一个是ngnix配置文件的路径，第二个是日志文件的路径\r\n";

	public static void main(String[] args) {
		try {
			String main = args[0];
			
			if(COMMAND_MAIN.equals(main)) {//-c src/com/test_data/nginx.conf src/com/test_data/access.log
				String configPath = args[1];
				String logFilePath = args[2];
				ThreadLocalHandler.openLogPrint.set(false);//默认关闭日志
				commandMain(configPath, logFilePath);
			} else if (WINDOW_MAIN.equals(main)) {
				
			} else {
				System.out.println(HELP_TEXT);
			}
		} catch (Exception e) {
			System.out.println(HELP_TEXT);
		}
	}
	
	/**
	 * @Title: 命令行方式启动
	 * @param configPath
	 * @param logFilePath
	 * @date: 2018年8月1日下午11:14:05
	 */
	private static void commandMain(String configPath, String logFilePath) {
		File configFile = new File(configPath);
		File logFile = new File(logFilePath);
		
		if(!logFile.exists()) {
			System.out.println("文件不存在" + logFilePath);
			return;
		}
		
		if(!configFile.exists()) {
			System.out.println("文件不存在" + configFile);
			return;
		}
		// 读取ngnix配置文件
		List<ConfContent> allConfContents = ReadNgnixCofUtil.readNgnixConfig(configFile);
		// 获得日志格式的解析器
		LogFormatHandler logFormatHandler = new LogFormatHandler(allConfContents);
		// 将日志文件解析为日志通用对象
		List<LogMode> list = logFormatHandler.parseFile(logFile);
		// 1. 进行IP统计分析
		PrintlnUtil.println("######################1. 进行IP统计分析############################");
		//List<LogIp> ipStat = LogIp.stat(list);
		//System.out.println(Arrays.toString(ipStat.toArray()));
		PrintlnUtil.println("######################2. 进行pv和uv的分析############################");
		// 2. 进行pv和uv的分析
		List<LogPvAndUv> stat = LogPvAndUv.stat(list);
		System.out.println(Arrays.toString(stat.toArray()));
		PrintlnUtil.println("###################### The End ############################");
	}
	
	
	
}
